package cn.jingyuan.owl.enums.core;

/**
 * 核心枚举接口
 */
public interface EnumCore<T> {

    String FORMAT = "(code=%s, codeName=%s)";

    /**
     * 获取枚举值
     *
     * @return 枚举值
     */
    T getCode();

    /**
     * 获取 {@link #getCode() enum} 的名称/描述
     *
     * @return {@link #getCode() enum} 的名称/描述
     */
    String getCodeName();

    /**
     * 获取枚举信息
     */
    default String toPrintString() {
        // 格式（Lombok）：EnumCore(value=value,valueName=valueName)
        return String.format(FORMAT, getCode(), getCodeName());
    }

}
